package br.com.foxinline.servico.ep;


import br.com.foxinline.modelo.ep.AtoTipoEP;
import br.com.foxinline.modelo.ep.NaturezaEscritura;
import br.com.foxinline.servico.ServicoGenerico;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author cadomeireles
 */
@Stateless
public class NaturezaEscrituraServico extends ServicoGenerico<NaturezaEscritura> {

    public NaturezaEscrituraServico() {
        super(NaturezaEscritura.class);
    }
    
    @Override
    public void deletar(NaturezaEscritura naturezaEscritura) {
        naturezaEscritura.setAtivo(false);
        super.atualizar(naturezaEscritura);
    }    

    public List<NaturezaEscritura> pesquisar(NaturezaEscritura naturezaEscritura) {
        String sql = "select naturezaEscritura from NaturezaEscritura naturezaEscritura where naturezaEscritura.ativo = true";
        
        if (naturezaEscritura.getCodigo() != null && !naturezaEscritura.getCodigo().isEmpty()) {
            sql += " and naturezaEscritura.codigo = " + naturezaEscritura.getCodigo();
        }

        if (naturezaEscritura.getDescricao() != null && !naturezaEscritura.getDescricao().isEmpty()) {
            sql += " and lower(naturezaEscritura.descricao) like '%" + naturezaEscritura.getDescricao().toLowerCase() + "%'";
        }        

        Query query = getEntityManager().createQuery(sql);
        return query.getResultList();
    }    

    public List<NaturezaEscritura> autocompletar(String query){
        return buscarPeloNome(query);
    }

    public List<NaturezaEscritura> buscarPeloNome(String query){
        List<NaturezaEscritura> naturezasEscritura = getEntityManager().createQuery("select naturezaEscritura from " + NaturezaEscritura.class.getSimpleName() + " naturezaEscritura where naturezaEscritura.ativo = true and lower(naturezaEscritura.descricao) like '%" + query.toLowerCase().trim() + "%'").getResultList();
        return naturezasEscritura;
    }

    public List<NaturezaEscritura> autocompletar(String query, AtoTipoEP atoTipoEP){
        return buscarPeloNome(query, atoTipoEP);
    }

    public List<NaturezaEscritura> buscarPeloNome(String descricao, AtoTipoEP atoTipoEP){

        String sql = "select naturezaEscritura from NaturezaEscritura naturezaEscritura where naturezaEscritura.ativo = true and lower(naturezaEscritura.descricao) like '%" + descricao.toLowerCase().trim() + "%'";
        
        sql += " and naturezaEscritura.atoTipoEP = :atoTipoEP";
        
        Query query = getEntityManager().createQuery(sql);

        query.setParameter("atoTipoEP", atoTipoEP);
        
        return query.getResultList();
    }    
    
}
